package com.rentong.wx.utils;

import com.rentong.basic.BusinessException;
import com.rentong.common.DateUtils;
import com.rentong.common.ObjectUtils;
import com.rentong.constants.GlobalConstant;
import com.rentong.wx.cust.dto.WxUserInfo;
import org.apache.http.util.TextUtils;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.Date;

/**
 * @Author: zhangle
 * @Description:
 * @Date: 2018/5/22 9:32
 */
public class WxApiUtil {
    /**
     * @Description: session放入formId
     */
    public static void setFormId(String formId,HttpServletRequest request) throws Exception {
        HttpSession session = request.getSession();
        session.setAttribute("formId",formId);
    }
    /**
     * @Description: session获取formIdg
     */
    public static void getFormId(String formId,HttpServletRequest request) throws Exception {
        HttpSession session = request.getSession();
        session.getAttribute("formId");
    }

    /**
     * @Description: 获取用户信息
     */
    public static WxUserInfo getCurrentUserInfo(HttpServletRequest request) throws Exception {
        WxUserInfo wxUserInfo = (WxUserInfo) request.getSession().getAttribute(GlobalConstant.SESSION_WX_USER);
        if (wxUserInfo == null) {
            //去缓存中找
            throw new BusinessException("110", "未登录");
        }
        return wxUserInfo;
    }

    /**
     * @Description: 获取用户ID
     */
    public static Long getCurrentCustId(HttpServletRequest request) throws Exception {
        WxUserInfo wxUserInfo = getCurrentUserInfo(request);
        return wxUserInfo.getCustId();
    }

    public static void checkParam(Object filedValue, String errMsg) throws Exception {
        if (ObjectUtils.isEmpty(filedValue)) {
            throw new BusinessException(errMsg);
        }
    }

    public static void checkParamTime(String dateTime, String errMsg) throws Exception {
        Date date = DateUtils.parseDate(dateTime,null);
        String time= DateUtils.getDateTime();
        Date date1 = DateUtils.parseDate(time,null);
        double i = DateUtils.getDistanceOfTwoDate(date1,date);
        if(i<1){
            System.out.println(errMsg);
            throw new BusinessException(errMsg);
        }
    }

    public static boolean isCarNO(String carNo) {
       /*
       1.常规车牌号：仅允许以汉字开头，后面可录入六个字符，由大写英文字母和阿拉伯数字组成。如：粤B12345；
       2.武警车牌：允许前两位为大写英文字母，后面可录入五个或六个字符，由大写英文字母和阿拉伯数字组成，其中第三位可录汉字也可录大写英文字母及阿拉伯数字，第三位也可空，如：WJ警00081、WJ京1234J、WJ1234X。
       3.最后一个为汉字的车牌：允许以汉字开头，后面可录入六个字符，前五位字符，由大写英文字母和阿拉伯数字组成，而最后一个字符为汉字，汉字包括“挂”、“学”、“警”、“军”、“港”、“澳”。如：粤Z1234港。
       4.新军车牌：以两位为大写英文字母开头，后面以5位阿拉伯数字组成。如：BA12345。
       */
        String carnumRegex = "^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[警京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼]{0,1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$";
        if (TextUtils.isEmpty(carNo)) return false;
        else return carNo.matches(carnumRegex);
    }
}
